home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
8bitfiles.net/archives
/
archives.tar
/
archives
/
compuserve-file-archive
/
09 Application Software
/
GC1.SDA
/
MAIN PROGRAM
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2019-04-13
|
10KB
|
315 lines
10 REM MAIN PROGRAM
20 REM WRITTEN BY KURT BRANDON
30 REM THE PRINTER PORTION OF THIS
40 REM PROGRAM WAS WRITTEN FOR THE
50 REM STAR NX-1000 PRINTER.
60 REM THE INTERFACE IS OPENED
70 REM IN TRANSPARENT MODE (SA=5)
80 :
90 REM THE EQUATES IN THE FIRST LINES
100 REM OF THE PROGRAM SHOULD ALLOW
110 REM CUSTOMIZING THE PROGRAM FOR
120 REM OTHER PRINTERS WITHOUT A MAJOR
130 REM REWRITE. ENJOY!
140 REM
150 :
160 DN=PEEK(186):REM DISK DRIVE ADDRESS
170 PN=4:REM PRINTER DEVICE NUMBER
180 TM=5:REM SECONDARY ADDRESS FOR TRANSPARENT MODE
190 UL=223:REM ASCII VALUE OF UNDERLINE CHARACTER
200 Z$=CHR$(0)
210 ES$=CHR$(27):REM PRINTER ESCAPE CODE
220 SE$=CHR$(68)+CHR$(17)+Z$:REM SET A TAB AT COLUMN 17
230 LS$=CHR$(65)+CHR$(9):REM SET LINE SPACING TO 1/8 INCH
240 TA$=CHR$(9):REM TAB COMMAND
250 RS$=CHR$(64):REM PRINTER RESET COMMAND
260 LF$=CHR$(10):REM LINEFEED COMMAND
270 DS$=ES$+CHR$(83)+CHR$(48)+"O"+ES$+CHR$(84)
280 REM DS$ IS A SUPERSCRIPT "O" AND IS USED FOR THE DEGREE SYMBOL
290 :
300 :
310 :
320 POKE53281,1:POKE53280,13
330 PRINTCHR$(142)"[147]";
340 PRINT"[146] [144][213][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][201]"
350 PRINT" bBEARING AND GREAT-CIRCLE DISTANCEb"
360 PRINT" jccccccccccccccccccccccccccccccccck"
370 AD=53272
380 DIMOP$(300):OP$(0)=Z$
390 FORI=1TO30:EB$=EB$+CHR$(UL):NEXT
400 FORI=49152TO49703:READA:POKEI,A:NEXT
410 DATA169,0,141,35,194,32,175,193,176,79,32,90,192,32,230,192,32
420 DATA120,193,32,139,193,32,158,192,32,250,192,173,33,194,208,3,76
430 DATA47,192,173,34,194,208,3,76,47,192,32,25,193,32,101,193,176
440 DATA3,76,22,192,173,19,194,133,3,173,20,194,133,4,173,35,194
450 DATA208,8,32,120,193,32,159,193,176,11,169,0,141,35,194,32,139
460 DATA193,76,22,192,96,160,4,177,251,141,18,194,24,165,251,105,5
470 DATA133,251,165,252,105,0,133,252,172,18,194,136,240,16,24,165,251
480 DATA105,2,133,251,165,252,105,0,133,252,136,208,240,56,165,251,233
490 DATA1,133,3,141,19,194,165,252,233,0,133,4,141,20,194,32,0
500 DATA226,142,39,194,96,173,21,194,141,23,194,141,25,194,173,22,194
510 DATA141,24,194,141,26,194,14,23,194,46,24,194,24,173,23,194,109
520 DATA25,194,141,23,194,173,24,194,109,26,194,141,24,194,24,165,3
530 DATA105,3,133,3,165,4,105,0,133,4,24,165,3,109,23,194,133
540 DATA5,165,4,109,24,194,133,6,96,160,1,177,251,141,27,194,141
550 DATA31,194,136,177,251,141,28,194,141,32,194,96,160,0,177,3,141
560 DATA33,194,177,5,141,34,194,200,177,3,133,98,177,5,133,100,200
570 DATA177,3,133,99,177,5,133,101,96,173,39,194,41,1,201,0,240
580 DATA4,32,233,193,96,160,0,177,98,209,100,144,23,208,22,200,204
590 DATA34,194,144,10,173,34,194,205,33,194,208,8,240,5,204,33,194
600 DATA144,227,96,169,1,141,35,194,32,79,193,96,160,0,177,3,153
610 DATA36,194,177,5,145,3,185,36,194,145,5,200,192,3,144,237,96
620 DATA206,29,194,208,3,206,30,194,173,30,194,201,255,240,2,24,96
630 DATA56,96,78,32,194,110,31,194,173,31,194,141,21,194,173,32,194
640 DATA141,22,194,96,56,173,27,194,237,21,194,141,29,194,173,28,194
650 DATA237,22,194,141,30,194,96,173,22,194,208,9,173,21,194,201,0
660 DATA208,2,56,96,24,96,165,47,164,48,133,251,132,252,32,139,176
670 DATA160,0,177,251,197,69,240,9,200,208,247,230,252,208,243,56,96
680 DATA200,208,2,230,252,177,251,197,70,208,230,192,0,208,2,198,252
690 DATA136,152,24,101,251,133,251,144,2,230,252,24,96,160,0,177,100
700 DATA209,98,144,23,208,22,200,204,33,194,144,10,173,33,194,205,34
710 DATA194,208,8,240,5,204,34,194,144,227,96,169,1,141,35,194,32
720 DATA79,193,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0
730 DATA0,0,0,0,0,0,0,0
740 PRINT" CENTRAL-STATION MODE?":PRINT" (Y/N)"
750 GETCS$:IFCS$=""THEN750
760 IFCS$<>"Y"ANDCS$<>"N"THEN750
770 SF$="":OPEN15,DN,15,"I0"
780 PL$="MEDFORD OREGON":LA=42.316:LO=122.866
790 NP$=" ":RT$=CHR$(13):SB$=" "
800 POKE650,255
810 DEFFNDS(R)=(R-INT(R))
820 D=1:K=111.11:M=57.2957795:N=60:S=69.041
830 BF$=" "
840 REM MAX FIELD SIZES: LOCATION,30...LATITUDE AND LONGITUDE,11 EACH
850 PRINT"[147]"
860 IFCS$="Y"THEN940
870 OK$="":SA$="":PRINT"YOUR LOCATION"RT$:INPUTSA$:IFSA$=""THEN2870
880 IFLEN(SA$)>30THENPRINT" MORE THAN 30 CHARACTERS":GOTO860
890 GOSUB2270:IFTL=1THENTL=0:GOTO880
900 GOSUB2400
910 IFNR=1THENGOSUB2540
920 IFOK$<>"N"THEN940
930 PRINT"[145][145][145][145][145][145]":FORI=1TO6:PRINTBF$:NEXT:PRINT"[145][145][145][145][145][145][145][145]":GOTO860
940 RV=LA:A=RV:A1=RV:A=A/M:N1$=PL$:GOSUB2120
950 AD$=RV$:BD$=R1$:RV=LO:L1=RV:GOSUB2120:T2$=RV$:U2$=R1$
960 OK$="":SA$="":PRINT"OTHER LOCATION"RT$:INPUTSA$:IFSA$=""THEN2870
970 IFLEN(SA$)>30THENPRINT" MORE THAN 30 CHARACTERS":GOTO960
980 GOSUB2270:IFTL=1THENTL=0:GOTO880
990 GOSUB2400
1000 IFNR=1THENGOSUB2540
1010 IFOK$<>"N"THEN1030
1020 PRINT"[145][145][145][145][145][145]":FORI=1TO6:PRINTBF$:NEXT:PRINT"[145][145][145][145][145][145][145][145][145][145][145][145]":GOTO960
1030 RV=LA:B=RV:A2=RV:B=B/M:N2$=PL$
1040 GOSUB2120:A2$=RV$:B2$=R1$:RV=LO:L2=RV:GOSUB2120:LT$=RV$:MT$=R1$
1050 L=(L1-L2)/M:E=SIN(A)*SIN(B)+COS(A)*COS(B)*COS(L)
1060 D=-ATN(E/SQR(1-E*E))+1.57079:C=(SIN(B)-SIN(A)*E)/(COS(A)*SIN(D))
1070 IFC>=1THENC=0:GOTO1100
1080 IFC<=-1THENC=180/M:GOTO1100
1090 C=-ATN(C/SQR(1-C*C))+1.57079
1100 C=C*M
1110 IFSIN(L)<0THENC=360-C
1120 DG=C:MZ=60*FNDS(C):SC=60*FNDS(MZ)
1130 DG$=STR$(INT(DG)):MZ$=STR$(INT(MZ+.5))
1140 H1$="N":H2$="N":L1$="W":L2$="W":IFA1<0THENH1$="S"
1150 IFL1<0THENL1$="E"
1160 IFA2<0THENH2$="S"
1170 IFL2<0THENL2$="E"
1180 PRINT"[147]"N1$
1190 PRINTSF$ABS(INT(1000*A1)/1000);TAB(17)H1$;:PRINTTAB(20)""AD$"[144]"
1200 PRINTSF$ABS(INT(1000*L1)/1000);TAB(17)L1$;:PRINTTAB(20)""T2$"[144]"
1210 PRINT:PRINT""N2$:PRINTSF$ABS(INT(1000*A2)/1000);TAB(17)H2$;
1220 PRINTTAB(20)""A2$"[144]":PRINTSF$ABS(INT(1000*L2)/1000);TAB(17)L2$;
1230 PRINTTAB(20)""LT$"[144]"
1240 PRINT"BEARING"INT(1000*C)/1000"DEG":PRINTSF$DG$"[188]"MZ$"'"
1250 PRINT"DISTANCES"
1260 PRINT""INT(K*D*M)TAB(11)"KILOMETERS"
1270 PRINT""INT(S*D*M)TAB(11)"STATUTE MILES"
1280 PRINT""INT(N*D*M)TAB(11)"NAUTICAL MILES"
1290 PRINT" [164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164] "
1300 PRINT"COMPUTE AGAIN FROM YOUR LOCATION? (Y/N)
1310 [153]SF$"PSTOP FOR PRINTED OUTPUT"
1320 [139]CS$[178]"N"[167][153]SF$"ISTOP TO INVERT PLACE NAMES"
1330 [153]SF$"VSTOP TO VIEW/SET TEXT KEYS"
1340 [139]CS$[178]"Y"[167][153]SF$" CENTRAL-STATION MODE"
1350 [161]A$:[139]A$[178]""[167]1350
1360 [139]A$[178]"Y"[167][141]3140:[137]960
1370 YG[178][184](0):[139]CS$[178]"N"[167][139]A$[178]"N"[167][137]850
1380 [139]A$[178]"P"[167][141]1960
1390 [139]CS$[178]"N"[167][139]A$[178]"I"[167][141]2200:[137]1050
1400 [139]A$[178]"V"[167][141]2940:[137]1180
1410 [137]1350
1420 :
1430 :
1440 :
1450 [143]\ POSITION & ERROR SUB
1460 RH[178][181](RN[173]256):RL[178]RN[171](256[172]RH)
1470 [152]15,"P"[170][199](96[170]8)[170][199](RL)[170][199](RH)[170][199](1)
1480 [132]15,E,E$,AA,B
1490 [139] E[178]0[176]E[178]50[167][142]
1500 [153]E;E$;AA;B
1510 [160]8:[160]15:[144]
1520 :
1530 :
1540 :
1550 [143]\ INPUT SUB
1560 S$[178]"":CC[178]0:DP[178]0:MP[178]0:SP[178]0:HM[178]0:DM[178]0:SG[178]1
1570 [150][165]VC(X)[178](X[177][178]48[175]X[179][178]57)[176](X[178]78[176]X[178]83[176]X[178]69[176]X[178]87[176]X[178]58[176]X[178]20[176]X[178]13[176]CV[178]46)
1580 [129]KI[178]0[164]40
1590 [139]KI[178]0[167][153]" WAITCMD";
1600 [139]KI[178]20[167][153]" CMD";
1610 [161]A$:[139]A$[179][177]""[167][137]1630
1620 [130]KI:[137]1580
1630 CV[178][198](A$):[139][165]VC(CV)[178]0[167][137]1580
1640 [139]CV[178]13[176]CV[178]20[167][153]" CMD";
1650 [139]CV[179][177]13[175]CV[179][177]20[167]CC[178]CC[170]1:[153]A$;:[139]CV[179][177]58[167]S$[178]S$[170]A$
1660 [139]CC[178]0[167][137]1700
1670 [139]CV[179][177]20[167][137]1700
1680 [129]KI[178]1[164]CC:[153]"CMD";:[130]:[129]KI[178]1[164]CC:[153]"CLOSE";:[130]:[129]KI[178]1[164]CC:[153]"CMD";:[130]
1690 [137]1560
1700 [139]CV[178]58[175]DM[178]0[167]DP[178][197](S$):DM[178]1:S$[178]"":[137]1580
1710 [139]CV[178]58[175]DM[178]1[167]MP[178][197](S$):DM[178]2:S$[178]"":[137]1580
1720 [139]DM[178]1[175]CV[178]13[167]MP[178][197](S$):S$[178]"":[137]1770
1730 [139]DM[178]2[175]CV[178]13[167]SP[178][197](S$):S$[178]"":[137]1770
1740 [139]CV[178]78[176]CV[178]87[167]SG[178]1:CV[178]58:[137]1700
1750 [139]CV[178]83[176]CV[178]69[167]SG[178][171]1:CV[178]58:[137]1700
1760 [139]CV[178]78[176]CV[178]87[176]CV[178]83[176]CV[178]69[167]SP[178][197](S$)
1770 [139]CV[178]13[175](DM[178]1[176]DM[178]2)[167]RV[178](DP[170]MP[173]60[170]SP[173]3600)[172]SG:[142]
1780 [139]CV[178]13[175]DM[178]0[167]RV[178][197](S$)[172]SG:[142]
1790 [137]1580
1800 [139]D[179][177]1[167][137]1770
1810 :
1820 :
1830 :
1840 :
1850 [143]\ INPUT EXPLANATION SUB
1860 [153]"LOADTO ENTER LOCATIONS":[153]" DECIMAL: XXX.XX "
1870 [153]" DEG/MIN/SEC: DD:MM:SS"
1880 [153]" FOLLOW COORDINATE"
1890 [153]" WITH ESTOP FOR EAST LONGITUDE (DEFAULT:WSTOP)"
1900 [153]" OR SSTOP FOR SOUTH LATITUDE (DEFAULT:NSTOP)"
1910 [153]" AFTER ENTRY, RETURNSTOP"
1920 [153]" LENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLEN":[142]
1930 :
1940 :
1950 [143]\ PRINTER OUTPUT SUB
1960 [159]1,PN,TM:[152]1,ES$LS$
1970 [152]1,ES$SE$
1980 [152]1,N1$LF$:[152]1," "[182]([181](1000[172]A1))[173]1000H1$TA$;BD$LF$
1990 [152]1," "[182]([181](1000[172]L1))[173]1000L1$TA$;U2$LF$:[152]1,N2$LF$
2000 [152]1," "[182]([181](1000[172]A2))[173]1000H2$TA$;B2$LF$
2010 [152]1," "[182]([181](1000[172]L2))[173]1000L2$TA$;MT$LF$
2020 [152]1,"BEARING"LF$:[152]1," "[181](1000[172]C)[173]1000"DEG"LF$
2030 [152]1," "DG$DS$MZ$"'"LF$:[152]1,"DISTANCES"LF$
2040 [152]1," "[181](K[172]D[172]M)"KILOMETERS"LF$
2050 [152]1," "[181](S[172]D[172]M)"STATUTE MILES"LF$
2060 [152]1," "[181](N[172]D[172]M)"NAUTICAL MILES"LF$:[152]1,EB$LF$:[152]1,LF$
2070 [160]1:[142]
2080 :
2090 :
2100 :
2110 [143]\ DEGREES-MINUTES-SECONDS SUB
2120 RV[178][182](RV)
2130 DP[178][181](RV):MP[178]60[172][165]DS(RV):SP[178]60[172][165]DS(MP):MP[178][181](MP[170].5):DM[178]1
2140 RV$[178][196](DP)[170]"LOG"[170][196](MP)[170]"'"
2150 R1$[178][196](DP)[170]DS$[170][196](MP)[170]"'":[142]
2160 :
2170 :
2180 :
2190 [143]\ INVERT PLACE NAMES SUB
2200 TV[178]A1:A1[178]A2:A2[178]TV:TV$[178]H1$:H1$[178]H2$:H2$[178]TV$:TV$[178]AD$:AD$[178]A2$:A2$[178]TV$
2210 TV[178]L1:L1[178]L2:L2[178]TV:TV$[178]L1$:L1$[178]L2$:L2$[178]TV$:TV$[178]T2$:T2$[178]LT$:LT$[178]TV$
2220 TV$[178]N1$:N1$[178]N2$:N2$[178]TV$:TV[178]A:A[178]B:B[178]TV:[142]
2230 :
2240 :
2250 :
2260 [143]\ FORMAT PLACE NAME SUB
2270 K2$[178]"":[129]II[178]1[164][195](SA$):K2[178][198]([202](SA$,II,1)):K2[178]K2[175]127
2280 K2$[178]K2$[170][199](K2):[130]:SA$[178]K2$
2290 R[178][198]([201](SA$,1))
2300 [139]R[179]48[176]R[177]57[167]2320
2310 SA$[178][200](SA$,[195](SA$)[171]1)[170]SK$(R[171]48)
2320 [139][200](SA$,1)[178]" "[167]SA$[178][201](SA$,[195](SA$)[171]1):[137]2320
2330 [139][195](SA$)[179]30[167]SA$[178]SA$[170][200](NP$,30[171][195](SA$))
2340 [139][195](SA$)[177]30[167]TL[178]1
2350 [142]
2360 :
2370 :
2380 :
2390 [143]\ BINARY SEARCH SUB
2400 NR[178]0:[159]8,DN,8,[200](SA$,1):RN[178]1:[141]1460:[141]1470
2410 [132]8,MN:XI[178][188](MN)[173][188](2):XI[178][181](XI)[170]1
2420 XM[178]XI[171]1:XI[178]2[174]XI:XX[178]XI[173]2
2430 [139]XM[179]0[167]NR[178]1:[160]8:[142]
2440 XM[178]XM[171]1:RN[178]XX:[141]1460:[141]1470:[132]8,PL$,LA$,LO$
2450 [139]SA$[178]PL$[167]LA[178][197](LA$):LO[178][197](LO$):[160]8:[142]
2460 [139]SA$[179]PL$[167]XX[178]XX[171]2[174]XM:[137]2430
2470 XX[178]XX[170]2[174]XM
2480 [139]XX[177]MN[167]XX[178]MN
2490 [137]2430
2500 :
2510 :
2520 :
2530 [143]\ ADD-LOCATION SUB
2540 [153]""SA$"STOP"
2550 [153]"IS NOT IN FILE"
2560 [133]"DO YOU WANT TO ADD IT (Y/N)";OK$
2570 [139]OK$[179][177]"Y"[175]OK$[179][177]"N"[167][153]"ON":[137]2560
2580 [139]OK$[179][177]"Y"[167][142]
2590 [141]1860:[153]"LATITUDE OF":[153]""SA$"STOP":[141]1560:LA[178]RV:LA$[178][196](LA)
2600 [139][182](LA)[177]90[167]2590
2610 [139][195](LA$)[179]11[167]LA$[178]LA$[170][200](NP$,11[171][195](LA$))
2620 [153]:[153]:[153]"LONGITUDE":[141]1560:LO[178]RV:LY$[178][196](LO)
2630 [139][182](LO)[177]180[167]2620
2640 [139][195](LY$)[179]11[167]LY$[178]LY$[170][200](NP$,11[171][195](LY$))
2650 RC$[178]SA$[170]RT$[170]LA$[170]RT$[170]LY$
2660 [153]"LOADLOCATION"RT$""SA$"STOP":S$[178]"N":[139]LA[179]0[167]S$[178]"S"
2670 [153]"LATITUDE:"[163]13)[182](LA);[163]25)S$;
2680 RV[178]LA:[141]2120:[153][163]25)""RV$"STOP"
2690 S$[178]"W":[139]LO[179]0[167]S$[178]"E"
2700 [153]"LONGITUDE:"[163]13)[182](LO);[163]25)S$;:RV[178]LO:[141]2120
2710 [153][163]25)""RV$"STOP"
2720 [153]" IS THIS CORRECT? (Y/N)"
2730 [161]A$:[139]A$[179][177]"N"[175]A$[179][177]"Y"[167][137]2730
2740 [139]A$[178]"N"[167]2590
2750 [153]"LOADMERGING: "SA$"STOP"
2760 [153]"INITIALIZING":[129]II[178]1[164]300:OP$(II)[178]"":[130]:OP$(1)[178]RC$
2770 [153]"LOADING RECORDS":[159]8,DN,8,[200](SA$,1):RN[178]1
2780 [141]1460:[141]1470:[132]8,MN
2790 [129]RN[178]2[164]MN:[141]1460:[141]1470:[132]8,PL$,LA$,LO$
2800 OP$(RN)[178]PL$[170]RT$[170]LA$[170]RT$[170]LO$:[130]
2810 [153]"SORTING":[158]49152OP$(1),2
2820 RN[178]1:[141]1460:[141]1470:[152]8,MN[170]1
2830 [153]"WRITING"
2840 [129]II[178]1[164]MN[170]1:RN[178]II[170]1:[141]1460:[141]1470:[152]8,OP$(II);:[130]:[160]8
2850 PL$[178]SA$:LO$[178]LY$
2860 [142]
2870 [160]8:[160]15:[159]1,PN,TM:[160]1:[139]ST[179][177]0[167]2890
2880 [159]1,PN,TM:[152]1,ES$RS$:[160]1
2890 [147]"MENU",DN
2900 :
2910 :
2920 :
2930 [143]\ TEXT-KEY ASSIGNMENT SUB
2940 [153]"LOAD(null)USRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSR(null)"
2950 [153]"SGN +"
2960 [153]"(null)ANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDSQR"
2970 [153]"KEY TEXT":[153]
2980 [129]I[178]0[164]9
2990 [153]" "I" "SK$(I)"WAIT"
3000 [130]:[153]:[153]:[153]:[153]:[153]"";
3010 [161]A$:[139]A$[178]""[167]3010
3020 AY[178][198](A$)
3030 [139]AY[178]13[167][142]
3040 [139]AY[178]20[175]SR$[178]""[167]3010
3050 [139]AY[178]20[167][129]KK[178]1[164][195](SR$):[153]"CMD ";:[153]"CMD";:[130]:SR$[178]"":[137]3010
3060 [139]AY[177][178]48[175]AY[179][178]57[167]SK$(AY[171]48)[178]SR$:SR$[178]"":[137]2940
3070 [139][195](SR$)[178][177]30[167]3010
3080 [139]AY[178]32[176]AY[177][178]65[175]AY[179][178]90[167]SR$[178]SR$[170]A$:[153]""A$"WAIT";
3090 [137]3010
3100 :
3110 :
3120 :
3130 [143]\ PARTIAL SCREEN CLEAR SUB
3140 [153]"":[129]JJ[178]1[164]18:[153]NP$SB$:[130]:[153]"":[142]